Мой Справочник | PHP | Переменные

$some_var
Переменные
$some_var;                         // объявление переменной
$some_var = &$some_another_var;    // & - жёсткая ссылка (привязка переменных)

Типы данных
$some_var = 5;                     // число
$some_var = "Some string";         // строка
$some_var = true;                  // лог. тип (булевский)
true выводит 1, false пустую строку ("")
Числа
$a = 15;
$b = 5;
$c = $a + $b;                      // сложение
$c = $a - $b;                      // вычитание
$c = $a * $b;                      // умножение
$c = $a / $b;                      // деление
$c = $a % $b;                      // остаток от деления
$a += 10;                          // аналог $a = $a + 10;
$a -= 10;                          // аналог $a = $a - 10;
$a *= 10;                          // аналог $a = $a * 10;
$a /= 10;                          // аналог $a = $a / 10;
$a++;                              // аналог $a = $a + 1;
$a--;                              // аналог $a = $a - 1;
$a = $a << 1;                      // побитовый сдвиг влево
$a = $a >> 1;                      // побитовый сдвиг вправо
Правила названия переменных такие же как в JS. Стиль названия переменных в php snake_case
Константы
define("PI", 3.14);           // объявление константы
echo defined("PI");           // проверка на наличие константы (возвращает bool)
Константы принято называть с большой буквы.
Знак доллара в имени константы не пишется!
echo PI; и всё
Строки
$var1 = "some_string1";
$var2 = "some_string2";
$var3 = $var1.$var2; // сложение строк, через точку
$var3 = $var1." some_text3 ".$var2; // можно вставлять любой текст
Если в двойные строковые кавычки вставлять названия переменных, таким образом "text and $some_var", то переменная $some_var будет парситься, как значение этой переменной, а не как текст (работают спецсимволы \n \t).

Но если записать в одинарные кавычки, вот так: 'text and $some_var', то $some_var выведется символьно (спецсимволы НЕ работают)
Лог. операторы
$num1 = 1;
$num2 = 2;
$num3 = 3;

$bool = $num2 > $num1;           // больше
$bool = $num2 < $num1;           // меньше
$bool = $num2 >= $num1;          // больше или равно
$bool = $num2 <= $num1;          // меньше или равно
$bool = $num2 == $num1;          // равно
$bool = $num2 != $num1;          // не равно
$bool = $num2 === $num1;         // строго равно (по типу)

$bool = $num2 > $num1 || $num2 == $num1;         // ИЛИ
$bool = $num2 > $num1 && $num3 == $num2;         // И
$bool = !($num2 > $num1 && $num3 == $num2);      // ! переворачивает логику
~ - унарный обратный оператор
^ - исключающее ИЛИ
0 ^ 1        // 1
0 ^ 0        // 0
1 ^ 1        // 0 (в этом и есть разница от обычного ИЛИ)
$bool будет возвращать true или false
Области видимости
переменных
global scope
$x1 = 1;
$y1 = 2;
$x1 = 10; // меняем на глобальном уровне
echo "Before: x1 = $x1, y1 = $y1<hr>"; 	// 10 2
local scope
function some_func() {
  $x1 = 12;  // $x1 = 12 только внутри этой функции
  echo $x1.<hr>;
}
some_func(); // 12
echo $x1; // 10
Если требуется сделать видимость внутри функции глобальной, то в языке PHP есть для этого специальные ключевые слова:
function some_func() {
  $GLOBALS["x1"] = 100; // теперь $x1 стала глобальной
}
или так:
function some_func() {
  global $x1 = 100;     // теперь $x1 стала глобальной
}
static scope
function some_func() {
  static $x1 = 100;     // теперь $x1 стала глобальной внутри функций (статичной)
}
Глобальные переменные можно изменять в любом месте кода (что находится ниже в коде будет итоговым значением переменной).

Локальные переменные изменяются только внутри функций.

Статические переменные имеют глобальную область видимости, но только внутри функций